//
//  StrutsFrom.swift
//  ProxyMode
//
//  Created by mac on 2017/10/31.
//  Copyright © 2017年 RRC. All rights reserved.
//

import Foundation

////抽象主题类
protocol Subject {
    //定义一个方法
    func request()
}

////真实主题类
public class RealSubject:Subject{
    //实现方法
    func request() {
        //业务逻辑处理
        print("真实主题业务逻辑")
    }
    
    
}


public class ProxyStruts:Subject{
    //要代理哪个实现类
    private var subject:Subject
    
    
    init(objects:Subject) {
        self.subject = objects
    }
    
    //默认被代理者
    func ProxyStruts() {
        self.subject = ProxyStruts() as! Subject
    }
    
    func request() {
        self.before()
        self.subject.request()
        self.after()
    }
    
    //预处理
    private func before(){
        print("预处理业务逻辑")
    }
    
    //善后处理
    private func after(){
        print("善后处理业务逻辑")
    }
    
}
